<?php
/**
 * @package QzoneTool
 * @author 布衣
 * @license http://commoner.cn
 * @link http://commoner.cn 布衣博客
 * @copyright 2014 By 布衣
 */

class Http{
	
	 /**
	  * 设置COOKIE保存路径
	  * @var string
	  */
    protected  $cookie;
    /**
     * 设置请求UA
     * @var string
     */
    public $ua = 'NokiaC5-03/UCWEB8.9.0.253/50/800';
    /**
     * 伪造IP
     * @var string
     */
    public $ip = '8.8.8.9';
    /**
     * 伪造来源地址
     * @var string
     */
    public $referer = '';
    /**
     * 构造函数
     * @return void
     */
    public function __construct(){
        $this->cookie = dirname(__FILE__) . '/cookie.txt';
    }
    /**
      * 模拟提交
      * @param $model 执行方式
      * @param $url 请求URL
      * @param $data 使用post时所用的数据包
      * @return string
     */
    public function RequestSend($method = 'GET' , $url , $data = array()){
     
        //初始化
        $ch = curl_init(); 
        //这是你想用PHP取回的URL地址。你也可以在用curl_init()函数初始化时设置这个选项。
        curl_setopt($ch , CURLOPT_URL , $url);
        //构造IP 
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:' . $this->ip , 'CLIENT-IP:' . $this->ip)); 
        //构造来路 
		curl_setopt($ch, CURLOPT_REFERER, $this->referer); 
        //如果你想把一个头包含在输出中，设置这个选项为一个非零值。
        curl_setopt($ch , CURLOPT_HEADER , 0);
        //在HTTP请求中包含一个"user-agent"头的字符串。
        curl_setopt($ch , CURLOPT_USERAGENT , $this->ua);
        //包含cookie信息的文件名称，这个cookie文件可以是Netscape格式或者HTTP风格的header信息。
        curl_setopt($ch, CURLOPT_COOKIEJAR, $this->cookie);
        //传递一个包含cookie数据的文件的名字的字符串。这个cookie文件可以是Netscape格式，或是堆存在文件中的HTTP风格的头。
        curl_setopt($ch, CURLOPT_COOKIEFILE, $this->cookie);
        //跟随重定向
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        //设定是否显示头信息
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        if($method == 'POST'){
        	//如果你想PHP去做一个正规的HTTP POST，设置这个选项为一个非零值。这个POST是普通的 application/x-www-from-urlencoded 类型，多数被HTML表单使用。
        	curl_setopt($ch, CURLOPT_POST, 1);
        	curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
        }
        //执行一个curl会话
        $string = curl_exec ($ch); 
        //关闭一个curl会话，唯一的参数是curl_init()函数返回的句柄。
        curl_close ($ch);

        return $string;
    }
}
?>